// 用来对axios进行二次封装

// 封装的目标：让后边用起来更轻松
// 封装的内容：
// 1、设置基地址
// 2、请求拦截器
// 3、transformResponse:大数处理
import JSONBig from 'json-bigint'

import axios from 'axios'
// 在普通的.js模块中去使用vuex中的数据
import store from '../store/index.js'
console.log('store', store)
// 用自己的配置，通过axios创建的一个实例
const instance1 = axios.create({
  // 后端服务器1
  // baseURL: 'http://ttapi.research.itcast.cn',
  baseURL: 'http://toutiao-app.itheima.net/',
  // baseURL: 'http://api-toutiao-web.itheima.net',
  // transformResponse是axios提供的工具，用来获取后端数据之后先进行处理
  // 再通过promise返回axios调用者
  transformResponse: [function (data) {
    // 解决大数，用json-bigint
    try {
      return JSONBig.parse(data)
    } catch (err) {
      console.log(err)
      return data
    }
  }]
  // timeout: 1000,
  // headers: {'X-Custom-Header': 'foobar'}
})

// 添加请求拦截器
instance1.interceptors.request.use(function (config) {
  // 在发送请求之前做什么：
  // 1、如果有token就带上
  const token = store.state.tokenInfo.token
  console.log('config', config)
  config.url = config.url.replace('/app/', '/')
  if (token) {
    // 向当前请求中，添加token
    // 模板字符串
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})
const instance2 = axios.create({
  // 后端服务器1
  baseURL: 'http://ttapi.research.itcast.cn'
  // baseURL: 'http://api-toutiao-web.itheima.net'
  // timeout: 1000,
  // headers: {'X-Custom-Header': 'foobar'}
})

// 按需导出
export { instance1, instance2 }
// 默认导出
export default instance1
